package br.com.ac.fatureweb.integration.billing;

import java.io.Serializable;

import br.com.ac.fatureweb.integration.billing.LogLeituraVO.TypeRetencao;

public class ContaVO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -5406148491968420870L;

	private Boolean emitirConta;

	private Long dataLeitura;

	private Long dataEmissao;

	private Long dataVencimento;

	private Boolean tarifaSocial;

	private Long codLeiturista;

	private Long inscricao;

	private Long idCarga;

	private Double valorConta;

	private String codigoBarra1;

	private String digitoCodigoBarra1;

	private String codigoBarra2;

	private String digitoCodigoBarra2;

	private String codigoBarra3;

	private String digitoCodigoBarra3;

	private String codigoBarra4;

	private String digitoCodigoBarra4;

	private String codigoBarra;

	private String mensagem1;

	private String mensagem2;

	private String mensagem3;

	private String mensagem4;

	private String mensagem5;

	private String mensagem6;

	private Integer typeRetencao;

	public ContaVO(Boolean emitirConta, Long dataLeitura, Long dataEmissao,
			Long dataVencimento, Boolean tarifaSocial, Long codLeiturista,
			Long inscricao, Long idCarga, Double valorConta,
			TypeRetencao typeRetencao) {
		super();
		this.emitirConta = emitirConta;
		this.dataLeitura = dataLeitura;
		this.dataEmissao = dataEmissao;
		this.dataVencimento = dataVencimento;
		this.tarifaSocial = tarifaSocial;
		this.codLeiturista = codLeiturista;
		this.inscricao = inscricao;
		this.idCarga = idCarga;
		this.valorConta = valorConta;
		if (typeRetencao != null) {
			this.typeRetencao = typeRetencao.getCodigo();
		}
	}

	public ContaVO(Boolean emitirConta, Long dataLeitura, Long dataEmissao,
			Long dataVencimento, Boolean tarifaSocial, Long codLeiturista,
			Long inscricao, Long idCarga, Double valorConta,
			String codigoBarra1, String digitoCodigoBarra1,
			String codigoBarra2, String digitoCodigoBarra2,
			String codigoBarra3, String digitoCodigoBarra3,
			String codigoBarra4, String digitoCodigoBarra4, String codigoBarra,
			String mensagem1, String mensagem2, String mensagem3,
			String mensagem4, String mensagem5, String mensagem6,
			Integer typeRetencao) {
		super();
		this.emitirConta = emitirConta;
		this.dataLeitura = dataLeitura;
		this.dataEmissao = dataEmissao;
		this.dataVencimento = dataVencimento;
		this.tarifaSocial = tarifaSocial;
		this.codLeiturista = codLeiturista;
		this.inscricao = inscricao;
		this.idCarga = idCarga;
		this.valorConta = valorConta;
		this.codigoBarra1 = codigoBarra1;
		this.digitoCodigoBarra1 = digitoCodigoBarra1;
		this.codigoBarra2 = codigoBarra2;
		this.digitoCodigoBarra2 = digitoCodigoBarra2;
		this.codigoBarra3 = codigoBarra3;
		this.digitoCodigoBarra3 = digitoCodigoBarra3;
		this.codigoBarra4 = codigoBarra4;
		this.digitoCodigoBarra4 = digitoCodigoBarra4;
		this.codigoBarra = codigoBarra;
		this.mensagem1 = mensagem1;
		this.mensagem2 = mensagem2;
		this.mensagem3 = mensagem3;
		this.mensagem4 = mensagem4;
		this.mensagem5 = mensagem5;
		this.mensagem6 = mensagem6;
		this.typeRetencao = typeRetencao;
	}

	/**
	 * @return the emitirConta
	 */
	public Boolean getEmitirConta() {
		return emitirConta;
	}

	/**
	 * @param emitirConta
	 *            the emitirConta to set
	 */
	public void setEmitirConta(Boolean emitirConta) {
		this.emitirConta = emitirConta;
	}

	/**
	 * @return the dataLeitura
	 */
	public Long getDataLeitura() {
		return dataLeitura;
	}

	/**
	 * @param dataLeitura
	 *            the dataLeitura to set
	 */
	public void setDataLeitura(Long dataLeitura) {
		this.dataLeitura = dataLeitura;
	}

	/**
	 * @return the dataEmissao
	 */
	public Long getDataEmissao() {
		return dataEmissao;
	}

	/**
	 * @param dataEmissao
	 *            the dataEmissao to set
	 */
	public void setDataEmissao(Long dataEmissao) {
		this.dataEmissao = dataEmissao;
	}

	/**
	 * @return the dataVencimento
	 */
	public Long getDataVencimento() {
		return dataVencimento;
	}

	/**
	 * @param dataVencimento
	 *            the dataVencimento to set
	 */
	public void setDataVencimento(Long dataVencimento) {
		this.dataVencimento = dataVencimento;
	}

	/**
	 * @return the tarifaSocial
	 */
	public Boolean getTarifaSocial() {
		return tarifaSocial;
	}

	/**
	 * @param tarifaSocial
	 *            the tarifaSocial to set
	 */
	public void setTarifaSocial(Boolean tarifaSocial) {
		this.tarifaSocial = tarifaSocial;
	}

	/**
	 * @return the codLeiturista
	 */
	public Long getCodLeiturista() {
		return codLeiturista;
	}

	/**
	 * @param codLeiturista
	 *            the codLeiturista to set
	 */
	public void setCodLeiturista(Long codLeiturista) {
		this.codLeiturista = codLeiturista;
	}

	/**
	 * @return the inscricao
	 */
	public Long getInscricao() {
		return inscricao;
	}

	/**
	 * @param inscricao
	 *            the inscricao to set
	 */
	public void setInscricao(Long inscricao) {
		this.inscricao = inscricao;
	}

	/**
	 * @return the idCarga
	 */
	public Long getIdCarga() {
		return idCarga;
	}

	/**
	 * @param idCarga
	 *            the idCarga to set
	 */
	public void setIdCarga(Long idCarga) {
		this.idCarga = idCarga;
	}

	/**
	 * @return the valorConta
	 */
	public Double getValorConta() {
		return valorConta;
	}

	/**
	 * @param valorConta
	 *            the valorConta to set
	 */
	public void setValorConta(Double valorConta) {
		this.valorConta = valorConta;
	}

	/**
	 * @return the codigoBarra1
	 */
	public String getCodigoBarra1() {
		return codigoBarra1;
	}

	/**
	 * @param codigoBarra1
	 *            the codigoBarra1 to set
	 */
	public void setCodigoBarra1(String codigoBarra1) {
		this.codigoBarra1 = codigoBarra1;
	}

	/**
	 * @return the digitoCodigoBarra1
	 */
	public String getDigitoCodigoBarra1() {
		return digitoCodigoBarra1;
	}

	/**
	 * @param digitoCodigoBarra1
	 *            the digitoCodigoBarra1 to set
	 */
	public void setDigitoCodigoBarra1(String digitoCodigoBarra1) {
		this.digitoCodigoBarra1 = digitoCodigoBarra1;
	}

	/**
	 * @return the codigoBarra2
	 */
	public String getCodigoBarra2() {
		return codigoBarra2;
	}

	/**
	 * @param codigoBarra2
	 *            the codigoBarra2 to set
	 */
	public void setCodigoBarra2(String codigoBarra2) {
		this.codigoBarra2 = codigoBarra2;
	}

	/**
	 * @return the digitoCodigoBarra2
	 */
	public String getDigitoCodigoBarra2() {
		return digitoCodigoBarra2;
	}

	/**
	 * @param digitoCodigoBarra2
	 *            the digitoCodigoBarra2 to set
	 */
	public void setDigitoCodigoBarra2(String digitoCodigoBarra2) {
		this.digitoCodigoBarra2 = digitoCodigoBarra2;
	}

	/**
	 * @return the codigoBarra3
	 */
	public String getCodigoBarra3() {
		return codigoBarra3;
	}

	/**
	 * @param codigoBarra3
	 *            the codigoBarra3 to set
	 */
	public void setCodigoBarra3(String codigoBarra3) {
		this.codigoBarra3 = codigoBarra3;
	}

	/**
	 * @return the digitoCodigoBarra3
	 */
	public String getDigitoCodigoBarra3() {
		return digitoCodigoBarra3;
	}

	/**
	 * @param digitoCodigoBarra3
	 *            the digitoCodigoBarra3 to set
	 */
	public void setDigitoCodigoBarra3(String digitoCodigoBarra3) {
		this.digitoCodigoBarra3 = digitoCodigoBarra3;
	}

	/**
	 * @return the codigoBarra4
	 */
	public String getCodigoBarra4() {
		return codigoBarra4;
	}

	/**
	 * @param codigoBarra4
	 *            the codigoBarra4 to set
	 */
	public void setCodigoBarra4(String codigoBarra4) {
		this.codigoBarra4 = codigoBarra4;
	}

	/**
	 * @return the digitoCodigoBarra4
	 */
	public String getDigitoCodigoBarra4() {
		return digitoCodigoBarra4;
	}

	/**
	 * @param digitoCodigoBarra4
	 *            the digitoCodigoBarra4 to set
	 */
	public void setDigitoCodigoBarra4(String digitoCodigoBarra4) {
		this.digitoCodigoBarra4 = digitoCodigoBarra4;
	}

	/**
	 * @return the codigoBarra
	 */
	public String getCodigoBarra() {
		return codigoBarra;
	}

	/**
	 * @param codigoBarra
	 *            the codigoBarra to set
	 */
	public void setCodigoBarra(String codigoBarra) {
		this.codigoBarra = codigoBarra;
	}

	/**
	 * @return the mensagem1
	 */
	public String getMensagem1() {
		return mensagem1;
	}

	/**
	 * @param mensagem1
	 *            the mensagem1 to set
	 */
	public void setMensagem1(String mensagem1) {
		this.mensagem1 = mensagem1;
	}

	/**
	 * @return the mensagem2
	 */
	public String getMensagem2() {
		return mensagem2;
	}

	/**
	 * @param mensagem2
	 *            the mensagem2 to set
	 */
	public void setMensagem2(String mensagem2) {
		this.mensagem2 = mensagem2;
	}

	/**
	 * @return the mensagem3
	 */
	public String getMensagem3() {
		return mensagem3;
	}

	/**
	 * @param mensagem3
	 *            the mensagem3 to set
	 */
	public void setMensagem3(String mensagem3) {
		this.mensagem3 = mensagem3;
	}

	/**
	 * @return the mensagem4
	 */
	public String getMensagem4() {
		return mensagem4;
	}

	/**
	 * @param mensagem4
	 *            the mensagem4 to set
	 */
	public void setMensagem4(String mensagem4) {
		this.mensagem4 = mensagem4;
	}

	/**
	 * @return the mensagem5
	 */
	public String getMensagem5() {
		return mensagem5;
	}

	/**
	 * @param mensagem5
	 *            the mensagem5 to set
	 */
	public void setMensagem5(String mensagem5) {
		this.mensagem5 = mensagem5;
	}

	/**
	 * @return the mensagem6
	 */
	public String getMensagem6() {
		return mensagem6;
	}

	/**
	 * @param mensagem6
	 *            the mensagem6 to set
	 */
	public void setMensagem6(String mensagem6) {
		this.mensagem6 = mensagem6;
	}

	public Integer getTypeRetencao() {
		return typeRetencao;
	}

	public void setTypeRetencao(Integer typeRetencao) {
		this.typeRetencao = typeRetencao;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((idCarga == null) ? 0 : idCarga.hashCode());
		result = prime * result
				+ ((inscricao == null) ? 0 : inscricao.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof ContaVO)) {
			return false;
		}
		ContaVO other = (ContaVO) obj;
		if (idCarga == null) {
			if (other.idCarga != null) {
				return false;
			}
		} else if (!idCarga.equals(other.idCarga)) {
			return false;
		}
		if (inscricao == null) {
			if (other.inscricao != null) {
				return false;
			}
		} else if (!inscricao.equals(other.inscricao)) {
			return false;
		}
		return true;
	}

}
